// authController
// auth业务逻辑
const { User } = require('../model/user')
const bcrypt = require('bcrypt')

exports.login = async (req, res, next) => {
    try {
        // 1、获取检验后的数据
        const validVal = req.validValue;
        // 检查用户是否存在
        // 注意这里因为user数据的处理中，将密码隐藏了，所以后面会报错，可以通过.select('+字段名')解决
        let user = await User.findOne({ email: validVal.email }).select('+password')
        if (!user) {
            return res.status(400).json({
                code: 400,
                msg: '该用户不存在，请先注册！',
            })
        }

        let pswResult = await bcrypt.compare(validVal.password, user.password)
        if (!pswResult) {
            return res.status(400).json({
                code: 400,
                msg: '密码错误，请重新输入！',
            })
        }
        res.status(200).json({
            code: 200,
            msg: '登录成功',
            authorization: {
                token: user.generateToken()
            }
        })
    } catch (error) {
        next(error)
    }
}